/**
* \file CaseArtefact.h
* \brief Prototypes des methodes de la classe CaseArtefact
* \author FEKI Mehdi && RIPOCHE Emilien
* \version 1.0
* \date 04/12/2011
*/

#pragma once

/********************* HEADERS *********************/
#include "Case.h"

/**
 * \class Classe CaseArtefact
 * \brief Classe concrete representant une case artefact
 *		  Elle derive de la classe case
 */
class __declspec( dllexport ) CaseArtefact : public Case {
// ATTRIBUTS
private :
	unsigned int nbArtefacts;
// METHODES
public :
	/**
	* \fn CaseArtefact()
	* \brief Constructeur CaseArtefact
	* \return Un pointeur sur un objet de type CaseArtefact
	*/
	CaseArtefact();

	
	/**
	* \fn CaseArtefact(unsigned int n)
	* \brief Constructeur CaseArtefact
	*
	* \param n Nombre d'artefacts que contiendra la case
	* \return Un pointeur sur un objet de type CaseArtefact
	*/
	CaseArtefact(unsigned int);
	
	/**
	* \fn unsigned int getNbArtefacts()
	* \brief Getter
	* \return Le nombre d'artefacts restant
	*/
	unsigned int getNbArtefacts() const;
	
	/**
	* \fn void setNbArtefacts(unsigned int n)
	* \brief Modifie le nombre d'artefacts restant par n
	*
	* \param n Nombre d'artefacts que contiendra la case
	*/
	void setNbArtefacts(unsigned int);
	
	/**
	* \fn void decrementationNbArtefacts()
	* \return Decremente le nombre d'artefacts
	*/
	void decrementationNbArtefacts();
	
	/**
	* \fn Case::TypeCase type()
	* \return Le type de la classe (Artefact)
	*/
	virtual TypeCase type() const;
};